docs: Pillar E paper — Evaluation section (clears [EXPAND])#84
Merged
Conversation
Fills the Evaluation and discussion stub in paper.adoc with: a per-pillar proof-size table (LOC / top decls / subst+rewrite / postulates); an honest reading of the common-upper-bound idiom (it removes subst BECAUSE the equations carry no comonadic coherence, not as a clever saving); explicit "where it does not extend" bounds (EI-2 negative, funext-relative mediator, thinness-only content); and threats to validity including the Gate-2 audit's single-recipe finding. Adds an [#ordinal-appendix] anchor for the remaining EXPAND cross-reference. Source data (verified against the modules at this commit): - Pillar A EchoFiberBridge.agda 56 LOC, 0 postulates, 0 subst/rewrite - Pillar B EchoPullback.agda 143 LOC; one subst in IsMediator.coherent shape (definitional, not a transport workaround) - Pillar B EchoGradedComonad.agda 159 LOC; 0 substs, coassoc proof is 17 lines of ≡-Reasoning at lines 135–158 - Pillar B EchoGraded.agda 169 LOC; 1 rewrite (in degrade-compose, by ≤g-prop) - Pillar C EchoSeparating.agda 139 LOC; 0 substs, refutation is two lines via checked true ≢ false - Pillar D EchoRelModel.agda 261 LOC; 1 rewrite Prose only. agda proofs/agda/All.agda and Smoke.agda still exit 0 under --safe --without-K, zero postulates introduced. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath
added a commit
that referenced
this pull request
May 20, 2026
…landed (#89) Updates the `Current rung state (2026-05-20)` block to record Wave 3 of today's swarm and refresh the next-Claude plan. ## What this captures * 5 Wave-3 PRs (`#80` EchoSearch, `#81` provenance, `#82` absint, `#83` parser, `#85` EchoCost) and 2 parallel-session merges (`#84` Pillar E Evaluation, `#86` F1 gc-coassoc). * Axis 8 is now 4-of-4 (decidability + graded access + cost + search). * Next-Claude plan refreshed: ordinal-track unbudgeted WF is the named next bottleneck; EchoApprox examples 6/8 still open; EchoSearch sequential/product composition deferred. ## Two minor lessons memorialised * Per-lane Smoke `open import ... using ( ... )` blocks should be separate (with header comments), not shared paren-blocks — cuts swarm merge-conflict noise. * During swarm-merge sequences, re-fetch the branch before any force-push: parallel claude sessions may be concurrently rebasing the same PR (observed on `#82`). ## Invariants * Doc-only change; no Agda touched. * `--safe --without-K` invariant unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
11 tasks
hyperpolymath
added a commit
that referenced
this pull request
May 20, 2026
…nstances (#88) ## Summary Gate **F3** of the earn-back plan (`docs/echo-types/earn-back-plan.adoc §F3`) now passes. Two non-isomorphic-grade-monoid instances of an abstract graded-comonad interface, with no `⊑-prop`-equivalent field in the interface itself, are mechanised: * **`nat-instance`** at the **commutative** monoid `(ℕ, +, 0)` — packages the F1 (#86) iterated-residue construction. * **`list-instance`** at the **non-commutative** free monoid `(List Tag, ++, [])` over a two-element `Tag` with per-element residue layers `R smol A = A × Bool`, `R big A = A × ℕ`. All three graded-comonad laws proved. The non-isomorphism is constructively witnessed by `tag-list-non-commutative` (one direction: only a non-commutative monoid satisfies it). The two earn-back gates F1 and F3 — both landed today — close the comonad-side earn-back programme as specified. ## Three new modules ### `EchoGradedComonadInterface.agda` — abstract record `GradedComonadStructure` fields: * Grade monoid: `G`, `1G`, `_·G_`, the three monoid laws. * Graded carrier: `D : G → Set → Set`, `mapD`, functor laws. * Counit `ε : D 1G A → A` at the unit grade. * **Nested** comultiplication `δ : D (g ·G h) A → D g (D h A)`. * The three graded-comonad laws stated against `subst` along the monoid's propositional identities. **No `⊑-prop`-equivalent field** — F3 guardrail honoured by construction. Inspect the field list at the top of the module. ### `EchoGradedComonadInstance1.agda` — F1 packaged `nat-instance : GradedComonadStructure` reuses `EchoGradedComonadF1.D / mapD / ε / δ / gc-counit-l / gc-counit-r / gc-coassoc` verbatim; stdlib's `+-identityˡ / +-identityʳ / +-assoc` supply the monoid laws. No adapter lemma needed — F1's signatures already use `subst` along the corresponding ℕ-equation proofs. ### `EchoGradedComonadInstance2.agda` — free-monoid instance `list-instance : GradedComonadStructure` at `(List Tag, ++, [])`. Construction parallels F1: * `D [] A = A`; `D (x ∷ xs) A = R x (D xs A)`. * `mapD-id`, `mapD-∘` by structural induction (per Tag). * `D-++` proves the type equality `D (xs ++ ys) A ≡ D xs (D ys A)` inductively; `δ = coe (D-++ xs ys A)`. * `gc-counit-r`: definitional (`++-identityˡ _ = refl` in stdlib). * `gc-counit-l` / `gc-coassoc`: structural induction on the grade list, cons step splitting on the head `Tag`. Same `δ`-naturality + `subst`-over-residue factoring as F1's `gc-coassoc`. * `D-nontrivial`: separating witness that `D (smol ∷ big ∷ []) Bool` is not collapsing to `⊤` / a prop. ## Build invariant * `agda proofs/agda/All.agda` exit 0 under `--safe --without-K` * `agda proofs/agda/Smoke.agda` exit 0 under `--safe --without-K` * **zero postulates, no funext, no escape pragmas** anywhere in the three new modules * both instances wired into `All.agda`; record + both instances + non-isomorphism witness + non-triviality witness pinned in `Smoke.agda` ## Scope (please re-read with care) F3 earns back the two-models claim **for the graded-comonad witness introduced by F1** — there are two genuinely non-isomorphic grade-monoid models of the `GradedComonadStructure` interface, the laws hold at each, the interface itself is `⊑-prop`-free. That is exactly what the gate asked for. F3 does **NOT** earn back the older `EchoRelModel`/`GCLaws` two-models claim retracted at R-2026-05-18 finding 3. That retraction concerned `set-model` and `rel-model` (both at the same grade poset, with `⊑-prop` baked in as a field, `rel-model = set-model × ⊤`, agreement by `refl`). The `GradedLossModel` interface there still has `⊑-prop`; that situation is unchanged. F3 here is about a **different** abstract interface and a **different** pair of models. The two earn-backs are not interconvertible — do not cite one as evidence for the other. `paper.adoc`, `types-abstract.adoc`, and `conservativity.adoc` remain untouched. Their bodies are about `EchoGraded`'s thin-poset structure, which neither F1 nor F3 changes. The combined F1+F3 result strengthens the case for a bounded "new contribution" paragraph, but the title / thesis / reindexing-modality framing should not move on these gates alone — owner-gated, as for F1. ## Doc updates (gated, scoped) * `docs/echo-types/earn-back-plan.adoc` — ledger row A3 (Unstarted → PASSED), Sequencing entry added, Status entry with the strict scope qualifier above. * `docs/retractions.adoc` — follow-up **F-2026-05-20b** appended (append-only revision policy preserved); the scope qualifier pinned in prose. ## Dependencies * Builds on **#86** (F1 PASSED). Branch based on `f1-coassoc-earn-back`; will rebase cleanly onto `main` once #86 lands. * Disjoint from **#82** (AbsInt) and **#84** (paper Evaluation — already merged). ## Test plan * [x] Interface module typechecks * [x] Instance 1 (nat) typechecks * [x] Instance 2 (list) typechecks — all three comonad laws * [x] Full `All.agda` build green * [x] `Smoke.agda` build green * [x] No postulates, no escape pragmas, no funext in any new module * [x] No `⊑-prop`-equivalent field in the interface record * [x] Non-commutativity witness for the second grade monoid * [x] Non-triviality witness for the second carrier * [ ] (owner) inspect field list of `GradedComonadStructure` — flag anything `⊑-prop`-shaped if present * [ ] (owner) ratify the F-2026-05-20b scope language in `retractions.adoc` 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
🔍 Hypatia Security ScanFindings: 10 issues detected
View findings[
{
"reason": "No test directory or test files found",
"type": "no_tests",
"file": "/home/runner/work/echo-types/echo-types",
"action": "flag",
"rule_module": "honest_completion",
"severity": "high",
"deduction": 20
},
{
"reason": "Issue in quality.yml",
"type": "missing_workflow",
"file": "quality.yml",
"action": "create",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Issue in security-policy.yml",
"type": "missing_workflow",
"file": "security-policy.yml",
"action": "create",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in secret-scanner.yml",
"type": "missing_workflow",
"file": "secret-scanner.yml",
"action": "create",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Action actions/cache@v4 needs attention",
"type": "unpinned_action",
"file": "agda.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Action hyperpolymath/standards/.github/workflows/governance-reusable.yml@main needs attention",
"type": "unpinned_action",
"file": "governance.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "No dependabot.yml or renovate.json found in echo-types",
"type": "DependencyUpdate",
"file": "/home/runner/work/echo-types/echo-types",
"action": "auto_fix",
"rule_module": "scorecard",
"severity": "high",
"remediation": "Add .github/dependabot.yml or renovate.json configuration.",
"scorecard_check": "Dependency-Update-Tool"
},
{
"reason": "Nominal-only SAST in echo-types: codeql.yml language matrix contains no language present in the repo and lacks `actions`, so CodeQL records zero results on every commit. Remediation: set the CodeQL matrix to `language: actions`.",
"type": "StaticAnalysis",
"file": "/home/runner/work/echo-types/echo-types",
"action": "auto_fix",
"rule_module": "scorecard",
"severity": "medium",
"remediation": "Add CodeQL or equivalent SAST workflow.",
"scorecard_check": "SAST"
},
{
"reason": "1 workflow(s) with tag-pinned (not SHA-pinned) actions in echo-types",
"type": "DependencyPinning",
"file": "/home/runner/work/echo-types/echo-types",
"action": "auto_fix",
"rule_module": "scorecard",
"severity": "medium",
"remediation": "Pin GitHub Actions and Docker base images by SHA hash.",
"scorecard_check": "Pinned-Dependencies"
},
{
"reason": "Repository has 1 non-main remote branch(es). Policy: single main branch only.",
"type": "GS007",
"file": ".",
"action": "delete_remote_branches",
"rule_module": "git_state",
"severity": "medium"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
hyperpolymath
added a commit
that referenced
this pull request
May 22, 2026
…luster landed
Three small accuracy passes through `docs/echo-types/`:
1. `roadmap.md` §"Theory work — no proof assistant needed" — the
section is now genuinely closed. Updated two stale items:
* Axis 8 line said "the *decidability-respecting* candidate has
shipped" and listed the other three as still candidate
refinements. All four have now shipped: EchoDecidable
(decidability), EchoCost (cost-indexed, #85), EchoAccess
(graded access, #68/#75), EchoSearch (witness-search, #80).
* Negative / co-echoes line was [unblocked]; now [landed] —
AntiEcho (#69), tropical decomposition concrete + generic
(#72 + #91), antiecho-partition-dec (#90). Names the
obligation-5 / obligation-6 closures explicitly.
2. `roadmap.md` §"Example work" — three [unblocked] items now
[landed]: ex. 5 (EchoExampleProvenance, #81), ex. 9
(EchoExampleParser, #83), ex. 10 (EchoExampleAbsInt, #82). Only
ex. 6 (approximate-echo numeric example) remains [unblocked].
3. `earn-back-plan.adoc`:
* Header note "the gate discipline was historically attributed
to a `roadmap-gates.adoc`; that file does not exist in-tree"
is stale — the file IS in tree (created 2026-05-18). Header
rewritten to list `roadmap-gates.adoc` alongside
`retractions.adoc` / this plan / `next-questions.adoc` as the
four canonical loci.
* Ledger row D ("roadmap-gates.adoc does not exist") marked
CLOSED 2026-05-20; cite reflects current reality.
Pure prose / docs only. No Agda content changes. `agda
proofs/agda/All.agda` and `agda proofs/agda/Smoke.agda` exit 0
under `--safe --without-K` (verified — confirms the docs say what
the code does).
Refs the closure side of #84 / #86 / #88 / #90 / #91 — does not
modify any Agda module, does not move any earned-back / retracted
claim.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath
added a commit
that referenced
this pull request
May 22, 2026
Brings the .machine_readable/6a2/ files in line with the prose docs following the Pillar F earn-back programme closure and the §"Theory work" section closing in this session. META.a2ml — three new ADRs appended (append-only discipline preserved; no existing ADR edited): * adr-007 F1 earn-back via monoid-graded iterated-residue construction (proofs/agda/EchoGradedComonadF1.agda; PR #86 merged 2026-05-20) * adr-008 F3 earn-back via two non-isomorphic-grade-monoid instances of an abstract interface (EchoGradedComonadInterface + Instance1/Instance2; PR #88 open) * adr-009 Retraction-discipline succeeded: R-2026-05-18 reframing converted into four earn-back gate passes (F4, F2, F1, F3); one retraction stays retracted (conservativity metatheorem, finding 5); none silently re-inflated Each ADR includes the strict scope qualifier — F1/F3 earn back claims FOR A SEPARATE SIDE-CONSTRUCTION; EchoGraded itself remains a thin-poset reindexing modality per R-2026-05-18, and the paper/ types-abstract/conservativity bodies are intentionally not moved. STATE.a2ml — next-actions list pruned (5 stale April items resolved), two new sections appended: * `earn-back-summary` — closure record for all four gates with module paths, claim wording, retraction-followup citation, and a forbidden-rebrandings list to prevent later mis-framing * `theory-work-summary` — closure record for §"Theory work — no proof assistant needed": axes fully mechanised, ruled-out items, refreshed items, canonical examples cluster next-actions cleaned of long-completed items (the "Apply the seven-commit integration sequence" entry from April; the t-3 and q2-4 items superseded by intervening work). What remains: q2-1 echo-not-prop generalisation (high), q2-3 RoleGraded as N5 (low), the new owner-gated-paper-update entry, the in-flight ordinal-track Path-1 entry (other session), and the parked v0.2 recipe extension. Pure machine-readable data; no Agda touched. agda proofs/agda/All.agda and agda proofs/agda/Smoke.agda exit 0 (confirms the schema/format load with no side-effects on the proof modules). Refs the closure side of the entire session: #84 / #86 / #88 / #90 / #91 / #92. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fills the Evaluation and discussion
[EXPAND]stub indocs/echo-types/paper.adocwith the content the NOTE explicitlyasked for:
postulates) sourced from the modules at this commit.
substbecause the equations carry no comonadic coherence (themodality is thin), not as a clever encoding saving. Reading the
short proofs as a thesis-strengthening trick was retracted on
2026-05-18 (R-2026-05-18); this section keeps the honest framing.
extend): the EI-2 negative result; the funext-relative mediator
property; the thinness-only content. Stated as bounds, not
re-spun as features.
"single recipe" finding (
docs/gate-2-handoff.adocObservationG), consumer-evidence sample-size, the conservativity-is-evidence
caveat, and the gate-discipline meta-caveat.
Adds
[#ordinal-appendix]anchor + tightens the status banner tonote that the ordinal-appendix
[EXPAND]is now the only one leftand is gated on Bachmann–Howard.
Refs: paper.adoc Pillar E
[EXPAND]clear-out (CLAUDE.md priorityitem 3 — "Evaluation: proof-size/cost table; quantify
common-upper-bound idiom vs naive
subst").Test plan
agda proofs/agda/All.agdaexit 0 under--safe --without-Kagda proofs/agda/Smoke.agdaexit 0 under--safe --without-K<<ordinal-appendix>>resolves; tablecolumns match
modules — table is a fingerprint, not a comparison-with-others
claim
Non-overlap with parallel sessions
Touches only
docs/echo-types/paper.adoc. Stays well clear of:_<ᵇ⁻_/ rank-mono slices inproofs/agda/Ordinal/**(another session's Slices 1–5 territory).[EXPAND]at line ~1200 (gated onBachmann–Howard, firewalled per
roadmap.md).docs/echo-types/types-abstract.adoc(submission-ready, handsoff).
🤖 Generated with Claude Code